package com.stone.zk.lock.config.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * zk锁配置properties
 *
 * @author Mr_wenpan@163.com 2021/08/02 11:52
 */
@Data
@ConfigurationProperties(prefix = ZkLockConfigProperties.PREFIX)
public class ZkLockConfigProperties {

    public static final String PREFIX = "stone.zk.lock";

    /**
     * zk的server地址:端口，多个server之间使用英文逗号分隔开
     */
    private String connectString;
    /**
     * 最大重试次数
     */
    private Integer maxRetries = 3;
    /**
     * 最大sleep时间，如果上述的当前sleep计算出来比这个大，那么sleep用这个时间
     */
    private Integer maxSleepMs = 3000;
    /**
     * 初始的sleep时间，用于计算之后的每次重试的sleep时间
     * 计算公式：当前sleep时间=baseSleepTimeMs*Math.max(1, random.nextInt(1<<(retryCount+1)))
     */
    private Integer baseSleepTimeMs = 1000;
    /**
     * 会话超时时间,默认是60s
     */
    private Integer sessionTimeoutMs = 6000;
    /**
     * 连接超时时间，默认是15s
     */
    private Integer connectionTimeoutMs = 1500;

}
